RecyclerView类似于ListView和GridView,但又因为的可定制性等等优于ListView和GridView,是一个相当强大的控件。
简述
RecyclerView类似于ListView和GridView,但又因为的可定制性等等优于ListView和GridView,是一个相当强大的控件。所以今天来实现一个简单的RecycleView,如下图所示
XML文件
主要由以下两个xml文件组成
- activity_main.xml:顾名思义是主界面的布局文件
- list_item_layout:这个是RecyclerView中item的布局文件
activity_main.xml
12345678910111213<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerViewandroid:layout_height="match_parent"android:layout_width="match_parent"android:id="@+id/recyclerView"android:scrollbars="vertical"android:scrollbarFadeDuration="1"/></RelativeLayout>
list_item_layout
|
|
这里用CardView,需要添加依赖
CardView是一个很实用的东西,可以实现很多效果,这里只讲RecyclerView,所以就不详细介绍了
java文件
主要也是有两个
- MainActivity.java : 主Activity
- MyAdapter.java:自己定制所需的适配器
先从MyAdapter介绍:
首先要定义一个MyHolder,我把它理解成一个item的容器,里面把每个item中的组件先初始化
12345678910111213141516/ *** 自定义Holder*/public class MyHolder extends RecyclerView.ViewHolder implements RecyclerView.OnClickListener{ImageView imageView;TextView title;public MyHolder(View itemView) {super(itemView);imageView = (ImageView) itemView.findViewById(R.id.image);title = (TextView) itemView.findViewById(R.id.textViewTitle);itemView.setOnClickListener(this);}public void onClick(View v) {}}第二步将建立的MyAdapter继承RecyclerView.Adapter
1public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder>最后在onBindViewHolder(MyHolder holder, final int position) 方法中实现自己想要显示的内容,以及OnClick事件,如:
1234567891011public void onBindViewHolder(MyHolder holder, final int position) {holder.title.setText(list.get(position));// holder.imageView.setImageDrawable(R.drawable.test_image);holder.itemView.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {Toast.makeText(context,list.get(position)+"被点击",Toast.LENGTH_LONG).show();}});}
完整MyAdapter.java
MainActivity里面的操作
设置布局管理器
1mRecyclerView.setLayoutManager(new LinearLayoutManager(this));设置Adapter
1mRecyclerView.setAdapter(myAdapter);
完整MainActivity.java
最后说一句
这里就先简单实现一下RecyclerView的用法,与ListView非常相像,接下来将会更新如果在RecyclerView中如何加入头布局,例如加上一个图像浏览的ViewPager,还有瀑布流布局。